package dto;

import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class PageInfo {

	public static final int SHOW_PAGE_COUNT = 7;

	private int pageNo = 1;
	// 总记录数
	private int total;
	private int pageSize = 10;
	// 总页数
	private int pageCount;
	// 去掉了pageNo信息的url
	private String baseUrl;

	public String getPagerUrl(int pageNo) {
		return null;
	}

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public int getTotal() {
		return total;
	}

	public void initByTotal(int total) {
		this.total = total;
		this.pageCount = total / pageSize + (total % pageSize == 0 ? 0 : 1);
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageCount() {
		return pageCount;
	}

	public void setPageCount(int pageCount) {
		this.pageCount = pageCount;
	}

	public String getBaseUrl() {
		return baseUrl;
	}

	public void setBaseUrl(String baseUrl) {
		this.baseUrl = baseUrl;
	}

	public int getStartIndexMysql() {
		return (pageNo - 1) * pageSize;
	}

	public List<Integer> getShowPageNos() {
		List<Integer> pageNos = new ArrayList<>(SHOW_PAGE_COUNT);
		pageNos.add(pageNo);
		int front = pageNo - 1;
		int next = pageNo + 1;
		while (front > 0 && pageNos.size() < 4) {
			pageNos.add(0, front--);
		}
		while (next <= pageCount && pageNos.size() < SHOW_PAGE_COUNT) {
			pageNos.add(next++);
		}
		while (front > 0 && pageNos.size() < SHOW_PAGE_COUNT) {
			pageNos.add(0, front--);
		}
		return pageNos;
	}

	public int getPreviousPageNo() {
		return pageNo == 1 ? 1 : pageNo - 1;
	}

	public int getNextPageNo() {
		return pageNo >= pageCount ? pageCount : pageNo + 1;
	}

	public String getPageUrl(int pageNo) {
		if (baseUrl.endsWith("?") || baseUrl.endsWith("&")) {
			return baseUrl + "pageNo=" + pageNo;
		}
		return baseUrl + "&pageNo=" + pageNo;
	}
}
